﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
//
//using Microsoft.Practices.EnterpriseLibrary.Logging;
using SIM.Geo.BE;
using System.Linq;

namespace SIM.Geo.DA
{
    public class DAMaquina : Base
    {
        /// <summary>
        /// Devuelve la lista de Maquinas
        /// </summary>
        /// <returns></returns>
        public List<Maquina> ListarMaquina()
        {
            return this.Context.Maquina.ToList();

        }
        /// <summary>
        /// Método para insertar una Maquina
        /// </summary>
        /// <param name="Maquina"></param>
        /// <returns></returns>
        public int InsertarMaquina(Maquina maquina)
        {
            this.Context.Maquina.AddObject(maquina);
            this.Context.SaveChanges();
            return maquina.CodigoMaquina;
        }
        /// <summary>
        /// Método para modificar un Maquina
        /// </summary>
        /// <param name="Maquina"></param>
        public void ModificarMaquina(Maquina maquina)
        {

            this.Context.Maquina.Attach(maquina);
            this.Context.ObjectStateManager.ChangeObjectState(maquina, EntityState.Modified);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método para modificar un Maquina
        /// </summary>
        /// <param name="Maquina"></param>
        public void ModificarContadorHorometroMaquina(int codigoMaquina, double contadorHorometro)
        {
            var maquina = this.Context.Maquina.Where(x => x.CodigoMaquina == codigoMaquina).FirstOrDefault();
            if (maquina != null)
            {
                maquina.ContadorHorometro = contadorHorometro;
            }
            this.Context.Maquina.Attach(maquina);
            this.Context.ObjectStateManager.ChangeObjectState(maquina, EntityState.Modified);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método para eliminar Maquina
        /// </summary>
        /// <param name="Maquina"></param>
        public void EliminarMaquina(Maquina maquina)
        {
            this.Context.Maquina.DeleteObject(maquina);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Devuelve la lista de Maquinas por Empresa contratista
        /// </summary>
        /// <returns></returns>
        public List<Maquina> ListarMaquinaPorEmpresa(int codigoEmpresa)
        {
            return this.Context.Maquina.Where(x => x.CodigoEmpresa.Equals(codigoEmpresa)).ToList();

        }

        /// <summary>
        /// Devuelve la lista de Maquinas por Empresa contratista
        /// </summary>
        /// <returns></returns>
        public List<Maquina> ListarMaquinaPorEmpresaPorEsDiamantino(int codigoEmpresa, int esDiamantino)
        {
            return this.Context.Maquina.Where(x => x.CodigoEmpresa.Equals(codigoEmpresa) && x.EsDiamantino == esDiamantino).ToList();
        }

        /// <summary>
        /// Obtiene una maquina
        /// </summary>
        /// <param name="codigoSondaje"></param>
        /// <returns></returns>
        public Maquina ObtenerMaquina(int codigoMaquina)
        {
            return this.Context.Maquina.Where(x => x.CodigoMaquina.Equals(codigoMaquina)).FirstOrDefault();

        }
    }
}
